<?php

function nombrePagina(){
	$nombreScript = $_SERVER['SCRIPT_NAME'];
	$nombre_archivo = array_pop(explode('/', $nombreScript));
	return $nombre_archivo;
}

function conectarPDO(){
    try {
        $gbd = new PDO('mysql:host=jorgeflores.ddns.net;dbname=sistemaversal', "root", "83031771");            
        return $gbd; 
    } catch (PDOException $e) {
        return false;
    }
}

function conectar()
{
  $conexion=mysql_connect("jorgeflores.ddns.net","root","83031771");
  mysql_select_db("sistemaversal");
  return $conexion;
}

function FormatoFecha($fecha)
{
    list($anio,$mes,$dia)=explode("-",$fecha);
    return $dia."-".$mes."-".$anio;
}

//convierte una fecha formato "d-m-a a" formato sql
function fechaSql($fecha) {
    
   $fecha = DateTime::createFromFormat('d-m-Y', $fecha);
     
    //$arrayFecha = split("-", $fecha);
    //$fecha = $arrayFecha[2] . "-" . $arrayFecha[1] . "-" . $arrayFecha[0];
    //$fecha_creada = date_create($fecha);
    //return date_format($fecha_creada,"Y-m-d H:i:s.u");
    return $fecha->format('Y-m-d');
}

/* Suma n dias a una fecha en formato Dia- mes - anio */

function suma_fechas($fecha, $ndias) {
    
    $fecha = DateTime::createFromFormat('d-m-Y', $fecha);
    $intervalo = 'P' . $ndias . 'D';
    $nuevaFecha = $fecha->add(new DateInterval($intervalo));
//    if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/", $fecha)) {
//        list($dia, $mes, $a�o) = split("/", $fecha);
//    }
//    if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/", $fecha)) {
//        list($dia, $mes, $a�o) = split("-", $fecha);
//    }
//    $nueva = mktime(0, 0, 0, $mes, $dia, $a�o) + $ndias * 24 * 60 * 60;
//    $nuevafecha = date("d-m-Y", $nueva);

    return $nuevaFecha->format('d-m-Y');
}
/**
 *
 *REDONDEA A DOS DECIMALES
 *
 */
function redondearDosDecimal($valor)
{
   
   $float_redondeado=round($valor * 100) / 100;
   return $float_redondeado;
}

/**
 *@description Valida si un email es valido, si el email tiene formato correcto devuelve true caso contrario false. para versiones de php 5.2 +
 *@param String $email cadena que contiene el correo que se desea validar
 *@return true or false
 */
function validaEmail($email)
{
  return filter_var($email, FILTER_VALIDATE_EMAIL);
}

/**
 *@description valida que lo que se ingresa sea numerico
 *@param String $string cadena que desea validar
 *@return true si la cadena cotinene solo numeros sino retorna false
 */
function validaDigito($string)
{
  return ctype_digit($string);	 
}

/**
 * descripci�n: valida una cadena de caracteres pasada como argumento, permite 
 * personalizar la validaci�n pudi�ndose aumentar o disminuir la 
 * restricci�n de caracteres.
 * 
 * autor: cass
 * sitio: cassianinet.blogspot.com
 * last update: 11/04/2011 
 *
 * par�metro uno (obligatorio): cadena de caracteres a validar.
 * par�metro dos (opcional): atajos de las restricciones separados por punto y coma (;), 
 *  pueden ser:
 *  esp --> espacios
 *  ace --> acentos
 *  dia --> di�resis
 *  ene --> e�es
 *  gui --> guiones
 *  pun --> puntos
 *  num --> n�meros
 *  und --> underscores
 *  apo --> apostrofes
 * par�metro tres (opcional): controla la visualizaci�n de errores (true o false).
 */
function validaAlfanumerico($sCadena, $restriccion='esp', $MostrarError=true)
{
   if (empty($sCadena))
	{
      if ($MostrarError)
		{
         die('Error: el primer parametro de ctype_alnum_plus es obligatorio.');
		}
      else
		{
		   return false;
		}
   }
   if (strlen($restriccion)>3 and strpos($restriccion,';') === false)
	{
      if ($MostrarError)
		{
        die('Error: El segundo par�metro de ctype_alnum_plus solo acepta los valores 
             (esp,ace,dia,ene,gui,pun,num,und,apo) separados por punto y coma (;)');
		}
      else
		{
		  return false;
		}
   }
	
   $sExpr = array('esp'=>'\s','ace'=>'����������','dia'=>'����������','ene'=>'��',
                  'pun'=>'\.','gui'=>'\-','num'=>'\d','und'=> '_','apo'=>'\'');
   $sPatron  = '/^[a-z';
   $restriccion = strtolower($restriccion);
   
	if ($restriccion=='esp')
	{
      $sPatron .= $sExpr['esp'];
	}
   else
	{
      $arrRestriccion = explode (';',$restriccion);
      
		foreach ($arrRestriccion as $name)
		{
         $sAtajos = array('esp','ace','dia','ene','gui','pun','num','und','apo');
         if (!in_array($name,$sAtajos))
			{
            if ($MostrarError)
				{
               die('Error: El segundo par�metro de ctype_alnum_plus solo acepta los valores 
               (esp,ace,dia,ene,gui,pun,num,und,apo) separados por punto y coma (;)');
				}
				else
				{
				  return false;
				}
         }
			
         $sPatron .= $sExpr[$name];
      }
   }
   
	$sPatron .= ']+$/i';
   
	return preg_match($sPatron,$sCadena) ? true : false;
}




/**
 *@description comprueba que una cadena no tenga caracteres extra�os
 *@param String $str cadena que se desea limpiar
 *@return String con caracteres eliminados que supere el ASCII 127 o false si no filtro
 */
function limpiaString($str)
{
    return filter_var($str, FILTER_SANITIZE_STRIPPED, FILTER_FLAG_STRIP_HIGH); 
}

/**
 *@description funcion que limpia un string para ser insertado en base de datos de manera segura  evitando sqlinjection
 *@param String $str cadena que se desea limpiar
 *@return String cadena limpia
*/
function limpiaSql($str)
{
  return is_array($str)? array_map('_clean', $str) : str_replace('\\', '\\\\', htmlspecialchars((get_magic_quotes_gpc() ? stripslashes($str) : $str), ENT_QUOTES));
}

// valida_rut($r) v0.001
// No importa si el RUT esta con punto (.), comas (,),
// guion (-),k (minuscula | mayuscula) da igual.
// ----------------------------------------------------
// Autor: Juan Pablo Aqueveque <jp [arroba] juque [punto] cl >
// Script completamente gratis, eso si! m�ndame un email si lo ocupas
// o si encuentras alg�n problema :-)
//
// Temuco, 31 octubre 2002 11:48:00
function valida_rut($r){
   
	$r = strtoupper(ereg_replace('\.|,|-','',$r));
	$sub_rut = substr($r,0,strlen($r)-1);
	$sub_dv = substr($r,-1);
	$x = 2;
	$s = 0;
	for ( $i=strlen($sub_rut)-1;$i>=0;$i-- )
	{
		if ( $x >7 )
		{
			$x=2;
		}
		$s += $sub_rut[$i]*$x;
		$x++;
	}
	$dv=11-($s%11);
	if ( $dv==10 )
	{
		$dv='K';
	}
	if ( $dv==11 )
	{
		$dv='0';
	}
	if ( $dv==$sub_dv )
	{
		return true;
	}
	else
	{
		return false;
	}
}

/***
 *
 * VALIDA FECHA EN FORMATO DIA-MES-A�O
 * @param String $fecha
 * @return bool True si la fecha es correcta False si la fecha no es correcta
 *
 */

function validaFecha($fecha)
{
	 list($dia, $mes, $ano) = explode("-", $fecha);
	 return checkdate($mes, $dia, $ano);
}

//Valida numero entero
function _is_int($str) {
    return (string)$str === (string)(int)$str;
}

//diferencia de dias entre dos fechas formato SQL
function dias_diferencia($inicio, $final)
{
   $desde = strtotime($inicio . " 00:00:00");
   $hasta = strtotime($final . " 24:00:00");
   return round(($hasta - $desde)/60/60/24);

}

function obtener_anios_ventas()
{
   $sql = "SELECT DISTINCT(YEAR(fecha_ingreso)) as year FROM factura ORDER BY year";
   $consulta = mysql_query($sql)or die("error");
   $nfilas = mysql_num_rows($consulta);
   if($nfilas > 0)
   {
      while($fila = mysql_fetch_array($consulta))
      {
         $anios[] = $fila['year'];
      }
   }
   
   return $anios;
}


?>
